#!/bin/bash
#Программа рисует вертикальные и горизонтальные корабли, длиной не больше 4
#Корабли не должны пересекаться, один из них не отрисовывается программой
#Формат параметров - 4х значное число,где первые 2 цифры координаты начала и 2 последние конца корабля
function FieldArray()
{
  for((i=0; i<10; i+=1));do
    for((j=0; j<10; j+=1));do
      field[i*10 + j]="0";
    done  
  done
  }
function DrawField()
{
  echo "   0 1 2 3 4 5 6 7 8 9 "
  echo "  --------------------"
    for((i=0; i<10; i++));do
      echo -n "$i|"
      for((j=0; j<10; j++));do
        case "${field[i*10 + j]}" in
          "0") echo -n " *";;
          "1") echo -n " #";;
        esac
      done  
      echo "|"
    done
  echo "  --------------------"
  }

FieldArray;
flag=0
for coord in $@
do
  x1=${coord:0:1}
  x2=${coord:2:1}
  y1=${coord:1:1}  
  y2=${coord:3:1}
  #проверка длины и формы корабля
  let test1=$"x2"-$"x1" 
  let test2=$"y2"-$"y1"
  if [[ $coord =~ ^[0-9]{4}$ ]] && [ $test1 -lt 4 ] && [ $test2 -lt 4 ] && [[ $x1 -eq $x2 || $y1 -eq $y2 ]]
  then
		for((i=$x1;i <= $x2;i++));do
			for((j=$y1;j <= $y2;j++));do
      if [ "${field[i*10 + j]}" -eq "0" ]
        then  
          field[i*10+j]="1"
        else 
          echo "Корабль \"$coord\" пересекается с уже существующим, он нарисован не будет"
          flag=1
          break
      fi
			done
      if [ $flag -eq 1 ] #прекращаем добавлять пересекающийся корабль
        then 
        flag=0
        break
      fi
		done						
  else echo "Только вертикальные и горизонтальные корабли, длиной не больше 4"
  fi
done
DrawField;
